Область применения: управляемое приложение, мобильное приложение.
1. В модуле формы размещаются процедуры и функции, которые необходимы только для реализации логики работы этой формы и исполняются в контексте этой формы. 1.1. Не следует размещать экспортные процедуры и функции в модулях форм. Для реализации экспортных процедур и функций рекомендуется использовать модули объектов, модули менеджеров объектов или общие модули. Для передачи входных параметров в формы следует применять метод ОткрытьФорму, для получения результата - процедуры-обработчики оповещений (см. стандарт Открытие форм), а для взаимодействия с открытыми формами - метод Оповестить и обработчик события ОбработкаОповещения (см. стандарт Обновление списков при интерактивных действиях пользователя). 1.2. Неправильно использовать экспортные процедуры и функции формы для параметризации формы при открытии. Например, неправильно: Форма = ПолучитьФорму("ОбщаяФорма.МояФорма"); правильно: ПараметрыФормы = Новый Структура("РежимРаботы", РежимРаботы)
1.3. Также не следует вызывать экспортные процедуры и функции модуля формы для обновления данных формы или для программной перерисовки формы в результате действий пользователя в других формах. В этом случае следует использовать метод глобального контекста Оповестить, методы формы ОповеститьОЗаписиНового, ОповеститьОбАктивизации и ОповеститьОВыборе. См. также: Обновление списков при интерактивных действиях пользователя. 1.4. Исключения из этого правила составляют экспортные процедуры-обработчики оповещений (ОписаниеОповещения.ИмяПроцедуры). |
2. В некоторых случаях в модуле формы возникает необходимость реализации процедур и функций, которые выполняются как на стороне клиента, так и на сервере. Например, для обновления данных формы из серверного обработчика ПриСозданииНаСервере и из клиентских событий ПриИзменении.
Для того чтобы избежать дублирования кода, такие процедуры и функции необходимо размещать в модуле формы с директивой компиляции &НаКлиентеНаСервереБезКонтекста и передавать в них контекст самостоятельно в виде параметра. В качестве контекста может выступать либо сама форма (ФормаКлиентскогоПриложения), либо ее реквизит (ДанныеФормыСтруктура).
Пример:
&НаСервере
Процедура ПриСозданииНаСервере()
УстановитьДоступность(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РазрешитьРедактированиеСуммыПриИзменении(Элемент)
УстановитьДоступность(ЭтотОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступность(Форма)
Форма.Элементы.ТоварыСумма.Доступность = Форма.Объект.РазрешитьРедактированиеСуммы;
КонецПроцедуры